<?php

class Student extends CI_Controller {

// 默认方法
    public function index($value = '') {
        // p('这是我的默认控制器');
        //加载默认视图
        $this->load->view('reg.php');
    }

// 显示所有作业信息

    public function viewAll() {
        $this->load->model('repo_model', 'repo');
        // 先通过模型获得所有作业的数据
        $data['info'] = $this->repo->getAll();

        // 把数据传递到视图进行显示
        $this->load->view('display.php', $data);
    }

    // 表单验证
    public function process() {
        // 加载表单验证辅助函数
        $this->load->helper(array('form'));
        // 加载表单验证类
        $this->load->library('form_validation');

        // 设置验证规则
        $this->form_validation->set_rules('username', '学生姓名', 'callback_username_check');
        $this->form_validation->set_rules('usernumber', '学号', 'callback_usernumber_check');
        $this->form_validation->set_rules('userurl', '仓库地址', 'callback_userurl_check');

        if ($this->form_validation->run() == FALSE) {
            p($this->form_validation->run());
            $this->load->view('reg.php');
        } else {
            $this->viewAll();
        }
    }

// 用户信息验证回调函数
    public function username_check($str) {

        $pattern = '/^[\x80-\xff]{6,}$/';

        if (!preg_match($pattern, $str)) {
            $this->form_validation->set_message('username_check', '用户名称必须是两个汉字以上');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    // 学号信息验证回调函数
    public function usernumber_check($str) {

        $pattern = '/^[pP]1[56]\d{7}/';

        if (!preg_match($pattern, $str)) {
            $this->form_validation->set_message('usernumber_check', '学号以p开头，后接数字，共10位');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    // 仓库地址信息验证回调函数
    public function userurl_check($str) {

        $pattern = '/^https:\/\/((gitee.com)|(coding.net)|(github.com))\/(.*?)\/(.*?)/';

        if (!preg_match($pattern, $str)) {
            $this->form_validation->set_message('userurl_check', '仓库地址必须是https开头的有效地址');
            return FALSE;
        } else {
            return TRUE;
        }
    }
}
